package com.xdcplus.web.service.bd;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.bd.BdClassGroupUserBindDTO;
import com.xdcplus.web.common.pojo.dto.bd.BdClassGroupUserDTO;
import com.xdcplus.web.common.pojo.dto.bd.BdClassGroupUserFilterDTO;
import com.xdcplus.web.common.pojo.entity.bd.BdClassGroupUser;
import com.xdcplus.web.common.pojo.vo.bd.BdClassGroupUserVO;

import java.util.List;


/**
 * 班组与员工关联表(BdClassGroupUser)表服务接口层
 *
 * @author Fish.Fei
 * @since 2023-05-06 15:24:51
 */
public interface BdClassGroupUserService extends BaseService<BdClassGroupUser, BdClassGroupUser, BdClassGroupUserVO> {

    /**
     * 添加班组与员工关联表(BdClassGroupUser)
     *
     * @param bdClassGroupUserDTO 班组与员工关联表(BdClassGroupUserDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveBdClassGroupUser(BdClassGroupUserDTO bdClassGroupUserDTO);

    /**
     * 修改班组与员工关联表(BdClassGroupUser)
     *
     * @param bdClassGroupUserDTO 班组与员工关联表(BdClassGroupUserDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateBdClassGroupUser(BdClassGroupUserDTO bdClassGroupUserDTO);

    /**
     * 批量保存或更新班组与员工关联表(BdClassGroupUser)
     *
     * @param bdClassGroupUserList 班组与员工关联表(BdClassGroupUserList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<BdClassGroupUser> bdClassGroupUserList);

    /**
     * 批量保存或更新班组与员工关联表(BdClassGroupUserDTOList)
     *
     * @param bdClassGroupUserDTOList 班组与员工关联表(BdClassGroupUserDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<BdClassGroupUserDTO> bdClassGroupUserDTOList);

    /**
     * 删除班组与员工关联表(BdClassGroupUser)
     *
     * @param id 班组与员工关联表(BdClassGroupUser)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteBdClassGroupUserLogical(Long id);
    
    Boolean deleteBdClassGroupUserByIds(String ids);

    /**
     * 查询班组与员工关联表(BdClassGroupUser)
     *
     * @param bdClassGroupUserFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<BdClassGroupUserVO>} 状态信息
     */
    List<BdClassGroupUserVO> queryBdClassGroupUserVOList(BdClassGroupUserFilterDTO bdClassGroupUserFilterDTO);

    /**
     * 查询班组与员工关联表(BdClassGroupUser)
     *
     * @param bdClassGroupUserFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<BdClassGroupUserVO>} 状态信息
     */
    PageVO<BdClassGroupUserVO> queryBdClassGroupUser(BdClassGroupUserFilterDTO bdClassGroupUserFilterDTO);

    /**
     * 查询一个
     *
     * @param id 班组与员工关联表(BdClassGroupUser)主键
     * @return {@link BdClassGroupUserVO} 班组与员工关联表(BdClassGroupUser)信息
     */
    BdClassGroupUserVO queryBdClassGroupUserById(Long id);

    /**
     * 批量绑定班组与员工关联表
     *
     */
    void batchBindBdClassGroupUser(BdClassGroupUserBindDTO bdClassGroupUserBindDTO);

    /**
     * 删除班组与员工关联表
     *
     */
    void deleteBdClassGroupUserByClassGroupId(Long classGroupId);
}
